import { UserResponse, UserProfileResponse, UserProfile } from '@/types/data'
import { RootThunkAction } from '@/types/store'
import { http } from '@/utils'

// 获取 我的 页面 - 用户自己的信息
export const getUser = (): RootThunkAction => {
  return async (dispatch) => {
    const res: UserResponse = await http.get('/user')
    // console.log(res)
    dispatch({ type: 'profile/get', payload: res.data })
  }
}

export const getUserProfile = (): RootThunkAction => {
  return async (dispatch) => {
    const res: UserProfileResponse = await http.get('/user/profile')
    dispatch({ type: 'profile/getUserProfile', payload: res.data })
  }
}

// 修改个人信息
export const updateUserProfile = (
  // 参数为 UserProfile 中的任意属性，也就是调用该 action 时，可以传入任意的用户信息
  // 从而来实现该接口的复用
  userProfile: Partial<UserProfile>
): RootThunkAction => {
  return async (dispatch) => {
    await http.patch('/user/profile', userProfile)
    // 更新用户信息
    dispatch({ type: 'profile/update', payload: userProfile })
  }
}
